home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / windows / wdj1096.zip / NELSON.ZIP / BUG1096A.CPP next >
C/C++ Source or Header  |  1996-07-30  |  1KB  |  52 lines

  1. //  To build this program from the command line, 
  2. //  be sure to include both source files: 
  3. // 
  4. //  bcc32 bug1096a.cpp bug1096b.cpp 
  5. // 
  6. //  bcc bug1096a.cpp bug1096b.cpp 
  7. // 
  8. //  cl bug1096a.cpp bug1096b.cpp 
  9. //
  10.  
  11. #include <iostream.h>
  12.  
  13. // Note that I force this function to extern
  14. // using a separate declaration.  Borland's
  15. // compiler refuses to compile a function
  16. // declared specifically as "extern inline".
  17. //
  18. extern int ext();
  19.  
  20. int inline ext()
  21. {
  22.     static int i = 0;
  23.     return ++i;
  24. }
  25.  
  26. // This function should be static without the explicit declaration,
  27. // but VC++ doesn't treat it as static without the extra keyword.
  28.  
  29. static int inline stat()
  30. {
  31.     static int i = 0;
  32.     return ++i;
  33. }
  34.  
  35. void a()
  36. {
  37.     cout << "On pass #1, ext() and stat() should both return 1\n";
  38.     cout << "From unit a, ext() returns "  << ext()
  39.          << ", stat() returns "            << stat()  << "\n";
  40.     cout << "Address of ext() is "     << (void *) ext
  41.          << ", address of stat() is "  << (void *) stat << "\n";
  42. }
  43.  
  44. extern void b();
  45.  
  46. main()
  47. {
  48.     a();
  49.     b();
  50.     return 1;
  51. }
  52.